总结 Flex 布局的最佳实践
有关 Flex 布局的所有细节详见 Notes/Web基础/CSS/flex布局。本篇只涉及 Flex 布局的最佳实践。
子项分组布局
最常见的需求就是实现 PC 端网站顶部的 NavBar。
左边和右边的 item 分为了两组,这个需求使用 flex 布局很容易实现。
假如我们的 NavBar 中有 5 个子项。
<div class="nav">
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
<div class="item">4</div>
<div class="item">5</div>
</div>
.nav {
height: 50px;
padding: 0 10px;
background: green;
display: flex;
gap: 0 10px;
align-items: center;
.item {
width: 30px;
height: 30px;
border: 1px solid;
background: skyblue;
}
}
想要让 1, 2 子项为一组,3, 4, 5 子项目为一组,只需要将第二个子项的 margin-right
设置为 auto
。
.item {
width: 30px;
height: 30px;
border: 1px solid;
background: skyblue;
&:nth-child(2) {
margin-right: auto;
}
}
同理,如果想让 3 子项目单独又分为一组,那么再把第三个子项目的 margin-right
设置为 auto
。
.item {
width: 30px;
height: 30px;
border: 1px solid;
background: skyblue;
&:nth-child(2) {
margin-right: auto;
}
&:nth-child(3) {
margin-right: auto;
}
}
等高布局
具体效果如下。
利用 flex 布局很容易实现这个效果,因为默认情况下 align-items
取值为 stretch
,在 flex 容器中的所有项目会默认占满交叉轴方向上的剩余空间。
.container {
display: flex;
.item {
flex: 1;
&:nth-child(1) {
background: green;
}
&:nth-child(2) {
background: skyblue;
}
&:nth-child(3) {
background: orange;
}
}
}